package org.opens.lambda;

import org.junit.Test;

public class DefaultMethod {

    /**
     * Java 8允许我们给接口添加一个非抽象的方法实现，只需要使用 default关键字即可，这个特征又叫做扩展方法
     */
    private interface NewInterface {

        public abstract int getMe(int y);

        default int pingFang(int x) {
            return x * x;
        }

    }

    private class NewInterfaceTest implements NewInterface {

        @Override
        public int getMe(int y) {
            return y;

        }
    }

    /**
     * 输出:
     *      2323
     *      100
     * 说明:
     *      NewInterfaceTest实现了NewInterface接口, 但是并没有实现这个接口的默认方法, 但是却成功调用了这个方法, 这就是默认方法的作用,
     *      但是这样给人的感觉像是接口变成了抽象类, 而不像是接口了.
     */
    @Test
    public void test1() {
        NewInterfaceTest a = new NewInterfaceTest();
        System.out.println(a.getMe(2323));
        System.out.println(a.pingFang(10));
    }

}
